home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / lists / gem / l_1199 / 1036 < prev    next >
Internet Message Format  |  1994-08-27  |  8KB

  1. Date: Tue, 26 Jul 1994 12:57:15 -0400 (EDT)
  2. From: Timothy Miller <millert@undergrad.csee.usf.edu>
  3. Subject: Re: A better objc_edit()
  4. To: gem-list@world.std.com
  5. In-Reply-To: <199407261543.AA22782@world.std.com>
  6. Message-Id: <Pine.3.87.9407261215.J7249-0100000@grad>
  7. Mime-Version: 1.0
  8. Precedence: bulk
  9.  
  10. Warwick:
  11.  
  12. ]Tim Miller:
  13. ]>Warwick:
  14. ]>]Tim:
  15. ]>]>Are the icons on the desktop part of a desktop form?  If so, how do
  16. ]>]>programs get away with replacing the the background without removing the
  17. ]>]>desktop's object tree?
  18. ]
  19. ]>]It DOES remove the desktop's tree.
  20. ]
  21. ]>Since it removed the desktop form, why do the icons still show up?
  22. ]
  23. ]If you mean those pretty icons on the desktop (drives, etc.) - they don't
  24. ]show up - they're objects on the Desktop's desktop-window.  If you mean
  25. ]iconified windows - they're just windows, and behave as such.
  26. ]
  27. ]Sorry for the confusion.
  28.  
  29. What I'm asking is... how does an application put up a backdrop on the 
  30. desktop, presumably by replacing the desktop form, and still have the 
  31. desktop icons appear which were on a different form?
  32.  
  33.  
  34.  
  35. Everyone:
  36.  
  37. You're complaining about the size of window libraries?  How about mine?  
  38. It's less than 20k!  :)
  39.  
  40.  
  41. Hollis:
  42.  
  43. ]Besides, I thought this conference was for discussing standards, and not
  44. ]arguing over stupid little piddly crap like this.
  45.  
  46. Bravo, Bravo!  Let's get down to some useful business.
  47.  
  48.  
  49.  
  50. ]> Here's an idea for operating back-ground windows...  put an event
  51. ]> rectangle around your window and watch for the mouse to move outside of
  52. ]> your window.
  53. ]
  54. ]This is not necessary, and it is very time-wasting.  Considering, that
  55. ]when you move your mouse, you are checking the rectangles under the mouse
  56. ]for which object your mouse moves under for the top window.  Remember, when
  57. ]the mouse leaves the window, objc_find reports a -1 (for desktop) and you
  58. ]can then do other things like move icons on desktop or whatever.  Your
  59. ]method is inefficient.  Try re-designing and re-thinking it.  I'm not trying
  60. ]to insult you, but, just think about it.  :-)
  61.  
  62. Somehow, I don't think you quite understood me.  I have no problem with 
  63. handling clicks on the desktop.  The point was to simulate WF_BEVENT in 
  64. normal TOS.  With normal TOS, if I click on a window, the window gets a 
  65. WF_TOPPED message.  Since I want to avoid that, I have to handle mouse 
  66. events myself.  On the other hand, I want the events for the TOP window 
  67. to be handled automatically (like the slider, close button, etc.).  So, 
  68. the solution I proposed was to put an event rectangle around the top 
  69. window.  When the mouse is within the top window, events would be handled 
  70. normally.  When the mouse it outside of the top window, on the other 
  71. hand, events will be given to my program which can then pass messages to 
  72. other windows if necessary.
  73.  
  74. What I need to know is how to find out the owner of a window with normal TOS.
  75.  
  76.  
  77. ]> When it does, monitor all mouse activity [wind_update(BEG_MCTRL)], and
  78. ]> when you get a click, process it.
  79. ]
  80. ]Monitor *all* mouse activity?  Ouch!  I thought that's what everyone else
  81. ]was flaming us about; it's too "busy-waiting"...
  82.  
  83. It's not busy-waiting at all... event_multi will pass mouse events to my 
  84. application when MCTRL is set, otherwise, the OS just sits there.  And 
  85. besides, who cares about busy-waiting when you're not multitasking?
  86.  
  87. ]> If it's an action on one of YOUR windows, then select buttons, whatever;
  88. ]> top if necessary.  If it's someone else's window, send a message to the
  89. ]> application, telling it to top the window.
  90. ]
  91. ]Simply do this:  A button "press" activates a dialog inside a background
  92. ]window.  A button "click" tops the window.  Press meaning hold down the
  93. ]mouse button.  Click meaning tapping the mouse button.
  94.  
  95. You can't make a distinction with normal TOS.  You only get WF_TOPPED 
  96. messages.  What I'm trying to do is simulate WF_BEVENT when I don't have 
  97. a multitasking OS.
  98.  
  99. ]> 1.  When you find another app's window and find out its handle, how do
  100. ]>     you get the application ID of that app so you can send it a message?
  101. ]
  102. ]>From what I understand, there's no real easy way.  Sure, you can get the
  103. ]window handle, but the only way to really get the application ID of the
  104. ]owner is to use WF_OWNER.  Another way is to use appl_find("PROGNAME") and
  105. ]check if it is installed...  I think that's not possible any other way
  106. ]except with WF_OWNER.
  107.  
  108. There doesn't seem to be WF_OWNER under normal TOS, and getting a 
  109. window's handle doesn't give me the application's name, does it?
  110.  
  111.  
  112. ]> Could someone give me replacement code for form_button?  I'm sure I could
  113. ]> do it myself (and in fact will), but I just want to make sure that I'm
  114. ]> not missing something.  I need to know what it does in detail.
  115. ]
  116. ]What type of code are you looking for?  Try using atari.archive.umich.edu
  117. ]and checking the programming directory, or use ftp.uni-kl.de to check its
  118. ]programming directory.  E-GEM is a very good example of form_button code.
  119. ]Once I release XAES's source, you will also see our form_button code which
  120. ]is highly optimized.
  121.  
  122. I just want example code I can use to make sure that mine doesn't miss 
  123. something.  I want a form_button replacement that will work on a 
  124. background window, using the rectangle list of the window.
  125.  
  126.  
  127. ]> Oh, and objc_edit code would be nice too.  :)  Although, I don't believe
  128. ]> in sending keypresses to anything other than the top window, so
  129. ]> replacement objc_edit wouldn't be very useful.  <shrug>
  130. ]
  131. ]The only real reason you would create your own objc_edit routine is to
  132. ]have INSERT/REPLACE, or to have a scrollable text object (like allowing the
  133. ]user to enter 40+ characters in a field)
  134.  
  135. Oh, I don't even need that.  If some exotic key were to be pressed, I 
  136. could just pass something DIFFERENT to form_keybd.
  137.  
  138. For example, when you click the first time on an edit field, it acts 
  139. normal, but the second time, it will move the insertion point to where 
  140. you clicked by repeatedly sending arrow keys to form_keybd.
  141.  
  142.  
  143. ]> Are the icons on the desktop part of a desktop form?  If so, how do
  144. ]> programs get away with replacing the the background without removing the
  145. ]> desktop's object tree?
  146. ]
  147. ]When you set WF_SCREEN, you are placing a dialog on the desktop.  This
  148. ]dialog gets redrawn automatically by GEM, so when you move a window over it,
  149. ]it automatically redraws itself.  To FORCE a redraw of the desktop, all you
  150. ]have to do is send a form_dial(3, 0, deskx, desky, deskw, deskh, deskx,
  151. ]desky, deskw, deskh).  That is documented in MultiTOS documentation too.
  152.  
  153. You didn't answer my question.
  154.  
  155.  
  156. Kevin:
  157.  
  158. ]> I can see what you're saying.  A duplicate screen would be rather memory
  159. ]> expensive.  Nevertheless, what I did was still noticably faster... PLUS
  160. ]> it kept track of the contents of the window for when I had to redraw a
  161. ]> section.
  162. ]>
  163. ]It may well be a lot faster, but its hideously expensive and inefficient.
  164. ]The main window of my first real gem application was a scrolling CLI window,
  165. ]and I initially considered doing redraws by maintaining a blittable copy of
  166. ]the screen. I soon realised I was just being lazy and did it properly though
  167. ]- I now save the objects on the screen (ie characters and their display
  168. ]attributes) instead, which has the advantage of taking less memory, of
  169. ]not having variable memory requirements for different colour depths, and of
  170. ]not being appreciably slower (apparently Ofir thought I was still blitting
  171. ]the screen for a while). It also gives me things like scrollback and cut and
  172. ]paste for free.
  173.  
  174. I was writing a terminal program and the other way was WAY too slow.  I 
  175. was doing everything I possibly could to squeeze every little bit of 
  176. speed out of the computer I possibly could.  Everything I did DID speed 
  177. things up, but I never got it fast enough.  It simply could not keep up 
  178. with full-tilt 57600 bps while scroolling... and I was doing 
  179. jump-scrolling.  GEM just simply is NOT fast enough, so I gave up.  I 
  180. haven't found anything that could come close to the speed of ANSITerm 
  181. with its optimized character display and hardware scrolling... THAT WILL 
  182. keep up with full-tilt 57600 bps on a Falcon.
  183.  
  184.  
  185.  
  186.